package com.alibaba.cola.statemachine;

/**
 * Visitor
 *
 * @author Frank Zhang
 * @date 2020-02-08 8:41 PM
 */
public interface Visitor {

    char LF = '\n';

    /**
     * @param visitable 状态机
     * @return 状态机入口
     */
    String visitOnEntry(StateMachine<?, ?, ?> visitable);

    /**
     * @param visitable 状态机
     * @return 状态机出口
     */
    String visitOnExit(StateMachine<?, ?, ?> visitable);

    /**
     * @param visitable 状态
     * @return 状态入口
     */
    String visitOnEntry(State<?, ?, ?> visitable);

    /**
     * @param visitable 状态
     * @return 状态出口
     */
    String visitOnExit(State<?, ?, ?> visitable);
}
